﻿using System;
using System.Collections.Generic;
using FluorineFx;
using Neturion.Dados;
using Neturion.Fachadas;

namespace Neturion.Servicos
{
    [RemotingService]
    public class ServicoCargo
    {
        public Cargo Inserir(Cargo cargo, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Inserir(cargo, usuarioPermissao);
        }

        public Cargo Atualizar(Cargo cargo, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Atualizar(cargo, usuarioPermissao);
        }

        public void Excluir(Cargo cargo, Usuario usuarioPermissao)
        {
            Fachada.GetInstancia().Excluir(cargo, usuarioPermissao);
        }

        public Cargo ObterCargoPorId(int id, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterCargoPorId(id, usuarioPermissao);
        }

        public IList<Cargo> ObterTodosCargos(Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosCargos(usuarioPermissao);
        }

        public IList<Cargo> ObterTodosCargos(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string codigo,
            string cboCodigo, string cboDescricao, string descricao, string previsaoSalarialDe, string previsaoSalarialAte, string salarioAnteriorDe,
            string salarioAnteriorAte, string percentualUltimoReajusteDe, string percentualUltimoReajusteAte,
            DateTime? ultimoReajusteDe, DateTime? ultimoReajusteAte, DateTime? inicioVigenciaDe, DateTime? inicioVigenciaAte, 
            DateTime? fimVigenciaDe, DateTime? fimVigenciaAte)
        {
                            
            return Fachada.GetInstancia().ObterTodosCargos(inicio, quantidade, quantidadeMinima, usuarioPermissao, codigo, cboCodigo,
                cboDescricao, descricao, decimal.Parse(previsaoSalarialDe), decimal.Parse(previsaoSalarialAte), decimal.Parse(salarioAnteriorDe),
                decimal.Parse(salarioAnteriorAte), decimal.Parse(percentualUltimoReajusteDe),
                decimal.Parse(percentualUltimoReajusteAte), ultimoReajusteDe, ultimoReajusteAte, inicioVigenciaDe, inicioVigenciaAte, 
                fimVigenciaDe, fimVigenciaAte);
        }

        public Cargo ObterCargoPorCodigo(Usuario usuarioPermissao, string codigo)
        {
            return Fachada.GetInstancia().ObterCargoPorCodigo(usuarioPermissao, codigo);
        }

        public IList<Cargo> ObterCargoPorDescricao(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string descricao)
        {
            return Fachada.GetInstancia().ObterCargoPorDescricao(inicio, quantidade, quantidadeMinima,usuarioPermissao, descricao);
        }

        public IList<Cargo> ObterPorDescricaoCbo(Usuario usuarioPermissao, string descricaoCbo)
        {
            return Fachada.GetInstancia().ObterPorDescricaoCbo(usuarioPermissao, descricaoCbo);
        }

        public IList<Cargo> ObterCargoPorCbo(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, Cbo cbo)
        {
            return Fachada.GetInstancia().ObterPorCbo(inicio, quantidade, quantidadeMinima,usuarioPermissao, cbo);
        }
    }
}